/**
 * 
 */
package xiaojian.toolkit.bean.tlv.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * @author hp
 *
 */
@Retention(RetentionPolicy.RUNTIME) 
public @interface TlvType {
    public abstract int tag();
    public abstract Class<?> type() default TlvType.class;
    public abstract String charset() default "";
    public abstract String description() default "";
    
    /**
     * 在消息体中的字节长度，为-1时，取字段类型的长度
     * @return
     */
    public abstract int bytes() default -1;

    /**
     * 解码时是否自动对字符串进行trim处理,默认不处理
     * @return
     */
    public abstract boolean trimString() default false;

    /**
     * 标注Object Array中元素编码时 的Tag值，当标注在ObjectArray字段上时，该值不可为空
     * @return
     */
    public abstract int elementTag() default -1;
}
